NOIol21-1 题解
今年比去年难多了!xml 没有任何长进 难过子
$T1.$ 愤怒的小 N
第二部分没调出来,但是先把推的记录一下免得以后找不着:
结论 1: $\sum\limits_{i = 0, cnt(i) \& 1}^{2^k - 1} i^p = \sum\limits_{i = 0, cnt(i) \& 1 = 0}^{2^k - 1} i^p$
$ans = \frac{1}{2} \sum\limits_{i = 0}^{n - 1} (1 - (-1)^{cnt(i)}) f(i)$
第一部分:
$\sum\limits_{i = 0}^{n - 1} f(i) = \sum\limits_{i = 0}^{k - 1} a_i \sum\limits_{j = 0}^{n - 1} j^i$
设 $S_i(n) = \sum\limits_{j = 0}^{n - 1} j^i$
所以 $S_i(n) = \frac{ n^{i + 1} - \sum\limits_{c = 0}^{i - 1} \binom{i + 1}{c} S_c(n) }{i + 1}$ 这部分可以 $O(K^2)$ 计算。
结论 2: 形如 $\sum\limits_{i = 0}^{2^n - 1} (-1)^{cnt(i)} i^k$ 在 $n > k$ 时 $= 0$。
证明:看作 $n$ 元集合在里面任意选,第 $i$ 个元素的权值是 $2^i$。一种物品集合 $t$ 的系数是 $\sum\limits_{s \geq 0, t \subseteq s}^{2^n - 1} (-1)^{cnt(s)}$,显然这个东西只在 $t = 2^n - 1$ 时不等于 $0$。而 $n > k$ 就意味着 $t$ 不可能为全集。
第二部分:
$T = \sum\limits_{o = j}^{n - 1} (str[o] - ‘0’) * 2^{o - j + 1}$。二项式展开
后面那坨设它等于 $sum(j, i - l)$
根据结论 2,
这部分可以 $O(k^3 + n)$ 计算。
$T2.$ 积木小赛
SAM 的话记录每个长度区间哪些长度出现过。然而实际上 hash 就行了。SAM 是 $O(n^2)$ 的,hash 需要 map/排序,我写双模就 TLE $80$ 了 /dk
$T3.$ 岛屿探险
算是最正常的一道题了吧。。
询问差分,离线,从前往后做。
还是拆位的思想。
使 $a ^ c \leq b$ 的 $c$ 必定是从高到低一段 $0$ 然后一个 $1$ 剩下任取。
把 $(a, b)$ 复制 $log$ 份塞进对应的所有 $c$ 的合法区间,现在要用 $(c, d)$ 去切这 $log$ 个区间,那么把 $(c, d)$ 也复制 $log$ 份塞进所有包含 $c$ 的区间即可。
$log$ 个位置分别做,开 $01 trie$ 查询 $a ^ c \leq d$ 的 $a$ 的个数。
code
1 |
|